Flash memory is a type of nonvolatile memory that can be erased in units of memory called blocks and programmed in bytes. Flash chips are divided into a plurality of main blocks. Each main block is physically isolated from each other main block. The main blocks are further divided into erase blocks. An erase block is also subdivided into sectors which contain bytes. An erase block may contain, for example, 128 sectors each comprising 512 bytes. All of the erase blocks within a main block share a common bit line.
As a result of the architecture of erase blocks, high voltages are required for programming. When a sector is programmed, the high voltages disturb the data stored in the erase blocks within the same main block. This may cause the data in the other erase blocks of the same main block to become corrupted.
Solutions to the disturb effect include both design solutions and algorithmic solutions. One such design solution is to reduce the number of erase blocks in each main block. Since only the data in erase blocks of the same main block is disturbed during programming, reducing the number of erase blocks in each main block reduces the number of erase blocks that are disturbed while programming an erase block. In addition, as a result of a flash chip having more main blocks, there are fewer programs executed in each main block. Both of these factors decrease the disturb effect.
However, increasing the number of main blocks also increases the resources necessary to operate the flash memory. All of the erase blocks within the same main block share certain resources (i.e. a bit line) necessary for reading and writing data. If fewer erase blocks are in each main block, these resources must be duplicated to a greater degree. As a result, the design of a flash chip becomes more complicated and less cost-effective. In addition, more of the space on the flash chip is consumed by the resources to allow the reading and writing of data. Accordingly, there is less space for data to be stored.
One algorithmic solution to the disturb effect is to alternate which erase blocks within a main block are erased and programmed. After an erase block is erased and programmed, it is not erased and programmed again until every other erase block in that main block is erased and programmed. For example, if a main block contains four erase blocks, once erase block 1 is erased and programmed, erase block 1 is not erased and programmed until erase blocks 2, 3 and 4 are erased and programmed.